package com.plum.admin.modules.sys.mapper;

import com.plum.admin.modules.sys.entity.SysRole;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.plum.admin.modules.sys.entity.SysRoleDept;
import com.plum.admin.modules.sys.entity.SysRoleMenu;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * <p>
 * 系统角色表 Mapper 接口
 * </p>
 *
 * @author 子丶沫
 * @since 2021-08-13
 */
public interface SysRoleMapper extends BaseMapper<SysRole> {

    /**
     * 通过用户id查询角色
     * @param userId
     * @return
     */
    List<SysRole> findRoleByUserId(@Param("userId") String userId);

    /**
     * 通过角色id删除权限
     * @param roleId
     * @return
     */
    int deleteByRoleId(@Param("roleId") String roleId);

    /**
     * 批量保存角色菜单关系
     * @param roleMenuList
     * @return
     */
    int batchSaveRoleMenu(@Param("roleMenuList")List<SysRoleMenu> roleMenuList);

    /**
     * 通过角色id查询菜单id集合
     * @param roleId
     * @return
     */
    List<String> findMenuIdListByRoleId(@Param("roleId") String roleId);

    /**
     * 通过角色id查询部门id
     * @param roleId
     * @return
     */
    List<String> findDeptIdByRoleId(@Param("roleId") String roleId);

    /**
     * 通过角色id查询用户
     * @param roleIdList
     * @return
     */
    List<String> findUserIdByRoleId(@Param("roleIdList") List<String> roleIdList);

    /**
     * 批量保存角色部门关系
     * @param roleDeptList
     */
    void batchSaveRoleDept(@Param("roleDeptList") List<SysRoleDept> roleDeptList);

    /**
     * 通过角色id删除角色部门关系
     * @param id
     */
    void deleteDeptByRoleId(String id);
}
